自营填单 | 百度->商户

自营填单页/预下单/预支付/库存锁定【百度即时请求商户】

接口描述

在自营模式下,用户提交订单前,百度服务发起请求商户锁定库存,称该过程为预下单,商户收到请求后应检查房价、房态、房量 合法后,创建商户订单锁定库存,返回百度预下单信息。百度订单30min内未支付将自动取消,此时商户可释放库存;

注:一个用户(手机号)在同一时间段只允许存在一笔未支付订单,当发起新的预支付订单时,百度检查该用户是否存在未支付订单,并调用取消接口通知三方取消前一笔未支付订单,释放库存。

预支付,主要目的为提高支付预定成功率,为避免滥用导致业务受损:

  • 用户支付成功除极特殊情况,如:酒店会拒单 外,平台不会强制取消用户预定单;
  • 防止部分用户频繁提交预支付单,导致其他用户可用房,无法正常预定,同一个用户(手机号)只允许存在一笔未支付订单,创建新的预支付订单将取消前一笔预支付订单;
  • 预支付订单30min一直未支付,合作方可自动释放库存;
  • 百度做防刷风控,防止作恶用户导致频繁锁库存,无法正常预定,包括不限于手机号、IP、设备、群控软件检测黑名单;
权限说明

为确保对内外请求安全性,添加公共参数并对公共参数进行统一验签,对于百度请求商户,百度在请求参数中添加以下公共参数,对于商户数据推送百度,在推送json数据体最外层key中也添加以下公共参数(详细见各推送数据样例)。

字段名 类型 长度 必填 释义
1 tp_name string 64 渠道号,开发前分配渠道号和私(primary_key),请妥善保管
2 timestamp int 10 秒时间戳
3 salt string 64 随机串
4 sign string 64 签名,签名规则 md5(tp_name + timestamp + salt + primary_key),单纯参数值(不含参数名)拼接,不需要加入参数名

注意事项

1.公共参数参数名首字母为小写,post请求时公共参数会包含在请求参数中

请求参数

字段名 类型 长度 必填 释义
1 tid string 64 酒店id
2 start string 64 起始时间 例:2021-09-01
3 end string 64 截止时间 例:2021-09-03
4 bd_pre_order_id string 64 百度预支付单号
5 room_type_id string 64 物理房型id
6 activity_id string 64 价格计划id
7 room_count int - 房间数
8 pay_amount int - 支付金额(price_models.tp_discount_price价格总和 - 百度优惠价格) 单位:分
9 origin_amount int - 原价(price_models.tp_discount_price价格总和)单位:分
9 cancel_policy int - 1:免费取消 2:限时取消 3:不可取消 4:付费取消
10 invoice_mode int - 1:酒店开具发票,前端展示为:如需发票,请向酒店前台索取;2:商户开具发票,注意在填单页将开票信息 提交给商户
11 can_checkin_start string 64 (钟点房必传字段)小时房入住时间 例:2023-06-16 10:00,如有次日入住为入住时间 + 24:00 如次日01:00入住传25:00
12 can_checkin_end string 64 (钟点房必传字段)小时房退房时间 例:2023-06-16 14:00,如有次日离店为离店时间 + 24:00 如次日10:00入住传34:00
13 hourage int - (钟点房必传字段) 小时房入住时间跨度/单位小时
14 customer_realname string 64 客人真实姓名,加密存储,加密规范参考附录:敏感信息加密规范 示例:suossmeng@163.com => 加密后 4pyuhKx-enjqoRHsNBjyVw
15 customer_mobile string 64 客人手机号,加密存储,加密规范参考附录:敏感信息加密规范
16 customer_checkin_time string 64 预计到店时间
17 customer_invoice_info string - 发票信息,json串,发票信息目前由独立接口承接此数据暂无
18 price_models string - 预定日期范围每日价格,json串
19 bd_mmc_ext string 64 json结构,包含百度MMC优惠信息,若涉及联合运营发券将通过该字段透传券码信息,用于券码核销、结算,商户将该信息保存至关联订单即可
20 gift_id string 64 酒套ID,优惠信息ID
21 customer_info_group string - 接入多间预订,传多个用户信息,间数大于1时,用户名称取该字段,用户电话还取customer_mobile
22 extra_params jsonstring - 扩展字段
23 sale_amount int 加价模式,供应商原始价格总和
24 公共参数 - - 公共参数参考公共参数部分

发票信息

字段名 类型 长度 是否必填 备注
need_invoice int - 是否需要发票 0:否,1是
earlly_prepare int - 是否需要提前开发票,0:不需要 1:需要
submit_time string 64 提交开票请求时间,yyyy-MM-dd HH:mm:ss
want_time string 64 需要发票时间,yyyy-MM-dd HH:mm:ss
post_type int - 发票领取方式:0:前台自取 1:邮寄 2:电子发票 3:送至房间
invoice_type int - 发票类型,1:增值税普通发票 2:增值税专用发票
invoice_type_num string - 支持的发票类型,1:电子普通发票 2:纸质普通发票,3纸质专用发票,如果是多类型英文逗号分隔,示例(1,2)
comment string 256 开票项目,例如:代开房费,住宿费,会议费等
invoice_title string 256 发票抬头
company_tel string 64 公司电话
company_tax string 64 公司税号
register_address string 256 公司注册地址
bank string 256 开户行
bank_account string 256 银行账号
receiver_address string 256 邮寄地址
receiver_name string 256 收件人姓名
receiver_mobile string 64 收件人手机号
receiver_email string 256 收件人邮箱
customer_invoice_info样例
{
	"need_invoice": "1",
	"earlly_prepare": "1",
	"submit_time": "2016-06-24 00:12:21",
	"want_time": "2016-06-24 00:12:21",
	"post_type": "1",
	"invoice_type": "1",
	"comment": "代订房费",
	"invoice_title": "百度时代网络技术(北京)科技有限公司",
	"company_tel": "13548608888",
	"company_tax": "12345568888",
	"register_address": "北京市海淀区上地十街10号",
	"bank": "中国工商银行",
	"bank_account": "1234343535453588888",
	"receiver_address": "北京市海淀区上地十街10号",
	"receiver_name": "Robin",
	"receiver_mobile": "13548608888",
	"receiver_email": "sjdj@baidu.com"
}

price_models样例
[{
	"date": "2021-09-02",
	"last_cancel_time": "2021-09-02 11:00:00",
	"stock_count": 2,
	"market_price": 5000,
	"tp_discount_price": 4800,
	"vip_price": 0,
	"discount_value": 200,
	"breakfast": 1
}, {
	"date": "2021-09-03",
	"last_cancel_time": "2021-09-02 11:00:00",
	"stock_count": 2,
	"market_price": 5000,
	"tp_discount_price": 4800,
	"vip_price": 0,
	"discount_value": 200,
	"breakfast": 1
}, {
	"date": "2021-09-04",
	"last_cancel_time": "2021-09-02 11:00:00",
	"stock_count": 2,
	"market_price": 5000,
	"tp_discount_price": 4800,
	"vip_price": 0,
	"discount_value": 200,
	"breakfast": 1
}]

bd_mmc_ext样例
[{
		"goods_id": "xxx",
		"ticket_id": "xxx",
		"ticket_type": "xxx",
		"rule_desc": "xxx",
		"tp_name_en": "xxx",
		"ext": {
			"lt": "仅限xxx月xx日-xxx月xx日可用",
			"lr": "仅限xxx酒店可用",
			"rc": "减免金额单位是分"
		}
	},
	{
		"goods_id": "xxx",
		"ticket_id": "xxx",
		"ticket_type": "xxx",
		"rule_desc": "xxx",
		"tp_name_en": "xxx",
		"ext": {
			"lt": "仅限xxx月xx日-xxx月xx日可用",
			"lr": "仅限xxx酒店可用",
			"rc": "减免金额单位是分"
		}
	}
]

extra_params  bd_preferential补贴详情 
{
    "bd_preferential":{
        "2023-12-21":{
            "single_return_amount":970, //单间百度补贴
            "total_amount":11600        //单间供应商原价
        },
        "2023-12-22":{
            "single_return_amount":1873, //单间百度补贴
            "total_amount":22400         //单间供应商原价
        }
    }
}

响应参数

字段名称 字段要求 字段类型 长度 是否必须 字段说明
1 tp_order_id 商户订单号 string 64 商户订单号
2 start 入住时间 string 64 入住时间,例:2021-09-01 00:00:00
3 end 离店时间 string 64 离店时间,例:2021-09-02 00:00:00
4 stock_count 库存 int - 在扣减库存后的剩余库存
5 market_price 市场价/原价/划线价,单位分 int - 市场价/原价/划线价
6 tp_discount_price 商户折扣价 int - 商户折扣价,单位分
7 vip_price 会员价 int - 指定用户会员等级的会员价,若无会员价,填0,单位分
8 discount_value 折扣值 int - 若:vip_price>0 则:discount_value=market_price-vip_price,若vip_price=0 则:discount_value=market_price-tp_discount_price,单位分
9 tp_order_expire 订单到期时间 int - 订单到期时间,超过改时间将自动过期,释放库存
10 tp_order_create_time 商户订单创建时间 int - 商户订单创建时间
11 confirm_message 确认消息 string 64 确认消息,用于提示用户,无则置空,例如:价格发生变化等

请求示例

Content-Type: application/json
POST {Host}/{path}
{
	"tp_name": "xxx",
	"timestamp": 1649261092,
	"salt": "624dba242f731",
	"sign": "827d13b5590c7fc1034137b39d92b90b",
	"tid": "29463",
	"start": "2022-04-13",
	"end": "2022-04-14",
	"bd_pre_order_id": "1649261092186146045933X5t1LJJuuzwwZvkY1rn_Ag",
	"room_type_id": "-29463",
	"activity_id": "Baidu_5076088574335685929",
	"room_count": 1,
	"origin_amount": 127900,
	"pay_amount": 127900,
	"cancel_policy": 3,
	"invoice_mode": 2,
	"customer_realname": "6-FDFQqJXFShom5WMWqezQ",
	"customer_mobile": "X5t1LJJuuzwwZvkY1rn_Ag",
	"customer_checkin_time": "18:00",
    "sale_amount" : 127900,
	"price_models": "[{\"last_cancel_time\":\"\",\"stock_count\":99,\"date\":\"2022-04-13\",\"cancel_cut_type\":0,\"cancel_cut_value\":0,\"market_price\":127900,\"tp_discount_price\":127900,\"discount_value\":0,\"vip_price\":0,\"breakfast\":2}]",
	"bd_mmc_ext": "[]"
}

响应示例

成功
{
  "errno": 0,
  "errstr": "",
  "desc": "",
  "data": {
    "tp_order_id": "93b098f15975ae41",
    "start": "2021-09-01 00:00:00",
    "end": "2021-09-02 00:00:00",
    "stock_count": 2,
    "market_price": 5000,
    "tp_discount_price": 4800,
    "vip_price": 0,
    "discount_value": 200,
    "tp_order_expire": 1630149399,
    "tp_order_create_time": 1630139399,
    "confirm_message": "正常"
  }
}
失败
注:errstr内容将直接提示给用户
{
  "errno": 11,
  "errstr": "当前已满房",
  "desc": "满房",
  "data": {}
}
钟点房说明

1.请求参数增加 can_checkin_start,can_checkin_end,hourage

price_models样例
[{
	"date": "2023-06-16",
	"last_cancel_time": "2023-06-16 11:00:00",
	"cancel_cut_type": 0,
	"cancel_cut_value": 0,
	"stock_count": 2,
	"market_price": 5000,
	"tp_discount_price": 4800,
	"vip_price": 0,
	"discount_value": 200,
	"breakfast": 1,
	"is_hour_room": "T",
	"hour_room_info": {
		"can_checkin_start": "10:00",
		"can_checkin_end": "20:00",
		"hourage": 4
	}
}]
多间预订说明

1.请求参数增加: customer_info_group

customer_info_group样例
[
{
	"customer_realname": "xxxxxx",
},
{
	"customer_realname": "xxxxxx",
}
]
酒店试单请求 | 百度->商户发票回传请求 | 百度->商户